#include "Hoja.h"


Hoja::Hoja(long tamanio_nodo) : Nodo(0,tamanio_nodo) {
	this->nivel=0;
	this->hoja_siguiente = 0;
	this->espacioOcupado = TAM_CONTROL_NODO;
	this->registro = new Registro[tamanio_nodo-TAM_CONTROL_NODO + 2];
}

Hoja::~Hoja() {
	delete[] this->registro;
}

void Hoja::serializar(char * buffer, unsigned int &offset) {
	Persistor::transformar_entero_en_char(buffer, offset, this->nivel);
	Persistor::transformar_entero_en_char(buffer, offset, this->idNodo);
	Persistor::transformar_entero_en_char(buffer, offset, this->espacioOcupado);
	Persistor::transformar_entero_en_char(buffer, offset, this->contador_claves);
	for (int i = 0; i < contador_claves; i++){
		claves[i].serializar(buffer,offset);
	}
	Persistor::transformar_entero_en_char(buffer, offset, this->hoja_siguiente);
	for (int i = 0; i < contador_claves; i++){
		registro[i].serializar(buffer,offset);
	}
}

void Hoja::deserializar(char * buffer, unsigned int &offset) {
	this->nivel = Persistor::obtener_entero_desde_Buffer(buffer,offset);
	this->idNodo = Persistor::obtener_entero_desde_Buffer(buffer,offset);
	this->espacioOcupado = Persistor::obtener_entero_desde_Buffer(buffer,offset);
	this->contador_claves = Persistor::obtener_entero_desde_Buffer(buffer,offset);
	for (int i = 0; i < contador_claves ; i++){
		Clave clave;
		clave.deserializar(buffer,offset);
		this->claves[i] = clave;
	}
	this->hoja_siguiente = Persistor::obtener_entero_desde_Buffer(buffer,offset);
	for (int i = 0; i < contador_claves ; i++){
		Registro elemento;
		elemento.deserializar(buffer,offset);
		this->registro[i] = elemento;
	}
}

